//
//  EntryArrayController.m
//  My Dream Slapper
//
//  Created by Jason Harris on 8/24/06.
//  Copyright (c) 2006, Jason Harris and Geekspiff
//  All rights reserved.
//  
//  Redistribution and use in source and binary forms, with or without modification, are permitted provided
//  that the following conditions are met:
//  
//  Redistributions of source code must retain the above copyright notice, this list of conditions and the
//  following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list
//  of conditions and the following disclaimer in the documentation and/or other materials provided with the
//  distribution. Neither the name of Jason Harris, Geekspiff, nor the names of its contributors may be used
//  to endorse or promote products derived from this software without specific prior written permission.
//  
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
//  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
//  PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
//  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
//  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
//  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//  POSSIBILITY OF SUCH DAMAGE.
//

#import "EntryArrayController.h"


@implementation EntryArrayController

+ (void)initialize
{
	[self setKeys: [NSArray arrayWithObject: @"selectionIndexes"] triggerChangeNotificationsForDependentKey: @"canAddComment"];
	[self setKeys: [NSArray arrayWithObject: @"selectionIndexes"] triggerChangeNotificationsForDependentKey: @"isSingleSelection"];
	[self setKeys: [NSArray arrayWithObject: @"selectionIndexes"] triggerChangeNotificationsForDependentKey: @"headerColor"];
}


+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key
{
    if ( [key isEqualToString: @"canAddComment"] )
        return YES;
    if ( [key isEqualToString: @"isSingleSelection"] )
        return YES;
    if ( [key isEqualToString: @"headerColor"] )
        return YES;
	
    return [super automaticallyNotifiesObserversForKey: key];
}


- (void)awakeFromNib
{
    [self addObserver:self forKeyPath:@"selectionIndexes" options:nil context:nil];
	[super awakeFromNib];
}


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ( [keyPath isEqualToString: @"selectionIndexes"] )
    {
        [self didChangeValueForKey:@"canAddComment"];
        [self didChangeValueForKey:@"isSingleSelection"];
        [self didChangeValueForKey:@"headerColor"];
    }
    
    [super observeValueForKeyPath:keyPath 
                         ofObject:object 
                           change:change 
                          context:context];
}


- (BOOL)canAddComment
{
	NSString *lastValidSQLUsername = [[[NSUserDefaultsController sharedUserDefaultsController] values] valueForKey: @"LastValidSQLUsername"];
	return lastValidSQLUsername && ([[self selectionIndexes] count] == 1);
}


- (BOOL)isSingleSelection
{
	return [[self selectionIndexes] count] == 1;
}


- (NSColor *)headerColor
{
	return [self isSingleSelection] ? [NSColor controlTextColor] : [NSColor disabledControlTextColor];
}

@end
